package com.tmt.asm;

import java.lang.reflect.InvocationTargetException;

import com.tmt.asm.bytecode.Wrapper;
import com.tmt.asm.service.HelloServiceImpl;
import com.tmt.asm.service.IHelloService;

/**
 * Wrapper 的思想是在一个方法中 根据传入的 methodName 来判断需要执行的方法
 * 执行效率和直接调用一样高，
 * 也不需要每个方法生成一个
 * @author lifeng
 */
public class TestMain {

	public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException {
		
		// 一种方式
		IHelloService ihello = new HelloServiceImpl();
		Wrapper wrapper = Wrapper.getWrapper(IHelloService.class);

		Class<?>[] parameterTypes = new Class<?>[] {};
		Object[] params = new Object[] {};
		
		// 一种方式
		Object s = wrapper.invokeMethod(ihello, "sayHello", parameterTypes, params);
		System.out.println("" + s);
		
		// 
	}
}
